﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace wcsTwitter.Objects
{
	public class Tweet
	{
		private string _Message;
		public string Message
		{
			get { return _Message; }
			set { _Message = value.Substring(0, 140); }
		}

		private User _UserName;
		public User UserName
		{
			get { return _UserName; }
			set { _UserName = value; }
		}

		private Boolean _IsReplyTo;
		public Boolean IsReplyTo
		{
			get { return _IsReplyTo; }
			set { _IsReplyTo = value; }
		}

		private Int64 _ReplyToUserId;
		public Int64 ReplyToUserId
		{
			// Max: 9,223,372,036,854,775,807
			get { return _ReplyToUserId; }
			set { _ReplyToUserId = value; }
		}

		private Int64 _RetweetUserId;
		public Int64 RetweetUserId
		{
			// Max: 9,223,372,036,854,775,807
			get { return _RetweetUserId; }
			set { _RetweetUserId = value; }
		}

		private Boolean _IsFavorite;
		public Boolean IsFavorite
		{
			get { return _IsFavorite; }
			set { _IsFavorite = value; }
		}

		private Boolean _IsRetweet;
		public Boolean IsRetweet
		{
			get { return _IsRetweet; }
			set { _IsRetweet = value; }
		}

		private DateTime _PostDate;
		public DateTime PostDate
		{
			get { return _PostDate; }
			set { _PostDate = value; }
		}

		private Location _LocationInfo;
		public Location LocationInfo
		{
			get { return _LocationInfo; }
			set { _LocationInfo = value; }
		}

		private Int64 _StatusId;
		public Int64 StatusId
		{
			// Max: 9,223,372,036,854,775,807
			get { return _StatusId; }
			set { _StatusId = value; }
		}

		private Client _ClientInfo;
		public Client ClientInfo
		{
			get { return _ClientInfo; }
			set { _ClientInfo = value; }
		}
	}

	public static class TweetEngine
	{
		public static Tweet Read(Int64 TweetId)
		{
			return new Tweet();
		}

		public static Tweet Post(Tweet tweet)
		{
			return new Tweet();
		}

		public static List<Tweet> GetTweetsList(User user)
		{
			return new List<Tweet>();
		}

		public static List<Tweet> GetTweetsList(User user, int numberOfTweetsToDisplay)
		{
			return new List<Tweet>();
		}

		public static List<Tweet> GetTweetsList(User user, int indexToStart, int numberOfTweetsToDisplay)
		{
			return new List<Tweet>();
		}
	}
}
